﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Styx.Helpers;
using System.IO;
using Styx;

using Styx.Common;

namespace FeralKitty
{
    public class FeralKittySettings : Settings
    {
        public static readonly FeralKittySettings AllPrefs = new FeralKittySettings();

        public FeralKittySettings()
            : base(Path.Combine(Utilities.AssemblyDirectory, string.Format(@"Config/Pasterke/FeralKitty/{0}-{1}-FeralKittySettings.xml", StyxWoW.Me.RealmName, StyxWoW.Me.Name)))
        {
        }

        [Setting, DefaultValue(false)]
        public bool DisableMovement { get; set; }

        [Setting, DefaultValue(false)]
        public bool DisableFacing { get; set; }

        [Setting, DefaultValue(false)]
        public bool DisableTargetting { get; set; }

        [Setting, DefaultValue(false)]
        public bool DisableMovementBear { get; set; }

        [Setting, DefaultValue(false)]
        public bool DisableFacingBear { get; set; }

        [Setting, DefaultValue(false)]
        public bool DisableTargettingBear { get; set; }

        [Setting, DefaultValue(0)]
        public int ChooseForm { get; set; }

        [Setting, DefaultValue(0)]
        public int SavageDefensePercent { get; set; }

        [Setting, DefaultValue(3)]
        public int useCatAoe { get; set; }

        [Setting, DefaultValue(false)]
        public bool ManualForm { get; set; }

        [Setting, DefaultValue("None")]
        public string MajorGlyph1 { get; set; }

        [Setting, DefaultValue("None")]
        public string MajorGlyph2 { get; set; }

        [Setting, DefaultValue("None")]
        public string MajorGlyph3 { get; set; }

        [Setting, DefaultValue(0)]
        public int Malchemyflask { get; set; }

        [Setting, DefaultValue(0)]
        public int BalchemyflaskBear { get; set; }

        [Setting, DefaultValue(1)]
        public int PHealthStone { get; set; }

        [Setting, DefaultValue(65)]
        public int PHealthStoneHealth { get; set; }

        [Setting, DefaultValue(0)]
        public int PLifeSpirit { get; set; }

        [Setting, DefaultValue(65)]
        public int PLifeSpiritHealth { get; set; }

        [Setting, DefaultValue(0)]
        public int Magilityflask { get; set; }

        [Setting, DefaultValue(0)]
        public int Earthflask { get; set; }

        [Setting, DefaultValue(0)]
        public int Mvirmenpotion { get; set; }

        [Setting, DefaultValue(0)]
        public int virmenBear { get; set; }

        [Setting, DefaultValue(0)]
        public int PHealthPotion { get; set; }

        [Setting, DefaultValue(65)]
        public int PHealthPotionHealth { get; set; }

        [Setting, DefaultValue(0)]
        public int Mtrinket1 { get; set; }

        [Setting, DefaultValue(0)]
        public int Mtrinket2 { get; set; }

        [Setting, DefaultValue(0)]
        public int Btrinket1Bear { get; set; }

        [Setting, DefaultValue(0)]
        public int Btrinket2Bear { get; set; }

        [Setting, DefaultValue(0)]
        public int Lifeblood { get; set; }

        [Setting, DefaultValue(0)]
        public int LifebloodBear { get; set; }

        [Setting, DefaultValue(0)]
        public int Mengibelt { get; set; }

        [Setting, DefaultValue(0)]
        public int Mengigloves { get; set; }

        [Setting, DefaultValue(0)]
        public int BengiglovesBear { get; set; }

        [Setting, DefaultValue(5)]
        public int UseBearForm { get; set; }

        [Setting, DefaultValue(85)]
        public int HealingTouch { get; set; }

        [Setting, DefaultValue(50)]
        public int CenarionWard { get; set; }

        [Setting, DefaultValue(70)]
        public int Barskin { get; set; }

        [Setting, DefaultValue(45)]
        public int SurvivalInstincts { get; set; }

        [Setting, DefaultValue(45)]
        public int FrenziedRegeneration { get; set; }

        [Setting, DefaultValue(45)]
        public int MightOfUrsoc { get; set; }

        [Setting, DefaultValue(0)]
        public int NaturesVigil { get; set; }

        [Setting, DefaultValue(55)]
        public int HealingTouchOOC { get; set; }

        [Setting, DefaultValue(70)]
        public int RejuvenationOOC { get; set; }

        [Setting, DefaultValue(35)]
        public int EatDrinkOOC { get; set; }

        [Setting, DefaultValue(4)]
        public int EliteHealth { get; set; }
 

        [Setting, DefaultValue(4)]
        public int EliteHealthBear { get; set; }

        [Setting, DefaultValue(0)]
        public int Berserk { get; set; }

        [Setting, DefaultValue(0)]
        public int BerserkBear { get; set; }

        [Setting, DefaultValue(0)]
        public int Berserking { get; set; }

        [Setting, DefaultValue(0)]
        public int BerserkingBear { get; set; }

        [Setting, DefaultValue(false)]
        public bool MightyBash { get; set; }

        [Setting, DefaultValue(false)]
        public bool SkullBash { get; set; }

        [Setting, DefaultValue(false)]
        public bool MightyBashBear { get; set; }

        [Setting, DefaultValue(false)]
        public bool SkullBashBear { get; set; }

        [Setting, DefaultValue(0)]
        public int DeathCoil { get; set; }

        [Setting, DefaultValue(0)]
        public int FeralSpirit { get; set; }

        [Setting, DefaultValue(0)]
        public int ShatteringBlow { get; set; }

        [Setting, DefaultValue(0)]
        public int SoulSwap { get; set; }

        [Setting, DefaultValue(30)]
        public int DivineShield { get; set; }

        [Setting, DefaultValue(30)]
        public int Dispersion { get; set; }

        [Setting, DefaultValue(0)]
        public int PauseKey { get; set; }

        [Setting, DefaultValue(0)]
        public int BearFormKey { get; set; }

        public enum Keypress
        {
            None,
            RSHIFT,
            LSHIFT,
            LCTRL,
            RCTRL,
            LALT,
            RALT
        };

        [Setting, DefaultValue(Keypress.None)]
        public Keypress PauseKeys { get; set; }

        [Setting, DefaultValue(Keypress.None)]
        public Keypress BearFormKeys { get; set; }

        [Setting, DefaultValue(true)]
        public bool PrintMsg { get; set; }

        [Setting, DefaultValue(false)]
        public bool DisableSwitchToBearForm { get; set; }

        [Setting, DefaultValue(false)]
        public bool useProwl { get; set; }

        [Setting, DefaultValue(false)]
        public bool Cyclone { get; set; }

        [Setting, DefaultValue(true)]
        public bool shred { get; set; }
    }
}
